perm filename ELFTST.SAI[S,HE] blob sn#508591 filedate 1980-05-08 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	BEGIN "ELFTST"
C00004 ENDMK
C⊗;
BEGIN "ELFTST"

COMMENT This was specifically designed to do a lot of extra output to the ELF,
	in order to find timing races, etc.;

DEFINE CRLF="'15&'12";
REQUIRE "ELFHDR.SAI[GRA,AAM]" SOURCE_FILE;
INTEGER I,TEMP,MEMLOC,LN;
BOOLEAN NOERROR;

PRINT("ELF test.",CRLF,"Starting word address: ");
MEMLOC ← CVO(INCHWL);
PRINT("Number of words to test: ");
LN ← CVO(INCHWL) - 1;
PRINT("Type a carriage return to start the testing.");
INCHWL;
ELFINI;

BEGIN "ARRAY ALLOCATION BLOCK"
INTEGER ARRAY CLEARS[0:LN];
ARRCLR(CLEARS,-1);
WHILE TRUE DO
    BEGIN
	ELFBKO(MEMLOC,LN+1,CLEARS);
	FOR I ← 0 STEP 1 UNTIL LN DO ELFOUT(MEMLOC+I,I);
	NOERROR ← TRUE;
	FOR I ← LN STEP -1 UNTIL 0 DO IF (TEMP ← ELFIN(MEMLOC+I)) ≠ I THEN
	   BEGIN
	      PRINT("Error in using ELF.  In location "&CVOS(MEMLOC+I)&
		" I wrote "&CVS(I)&" but read back "&CVOS(TEMP)&CRLF);
	      NOERROR ← FALSE;
	   END;
	PRINT(".")
    END
END "ARRAY ALLOCATION BLOCK"

END "ELFTST";